home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / tcqbsnip.zip / WIPE.BAS < prev   
BASIC Source File  |  1997-06-20  |  7KB  |  179 lines

  1. DECLARE SUB wipe (mode%, switch$, Colr%, Speed%)
  2.  
  3. 'Screen Clearing Routines
  4. 'by Tika Carr
  5. 'Donated to the Public Domain
  6. 'No warranties or guarantees are expressed or implied
  7.  
  8. 'Here are some Screen Wipes to use in Multimedia and other applications.
  9. 'The horizontal and vertical blinds are rather slow, so if anyone comes
  10. 'up with a faster formula, do let me know! The routines may take longer
  11. 'at higher screen modes (like 9, which is 640 across).
  12. '
  13. 'Its use is pretty much self-explainatory. First, you pass the video mode
  14. '(supported are screens 9, 12 and 13). If the video mode passed isn't
  15. 'supported, it will default to the 320 x 200/256 mode and do a SCREEN 13
  16. 'command, which clears the screen to black without effect.
  17. '
  18. 'The switch may seem the most difficult, but really isn't. Look at
  19. 'the comments in the DATA statements for more info. Basically, its
  20. 'wipetype/diretion where wipe types are vw, hw, dw, vb, hb and db
  21. 'and directions can be u, d, l & r combinations.
  22.  
  23. 'The color is the number of the color to use, which depends on the video
  24. 'mode you are using. And speed controls the size and speed of the wipes.
  25.  
  26. SCREEN 13
  27.  
  28. 'Wipe Demo
  29.  
  30. FOR i = 1 TO 18
  31.     READ m%, s$, c%, p%
  32.     wipe m%, s$, c%, p%
  33.     SLEEP 2
  34. NEXT
  35.  
  36. SCREEN 0, 0, 0, 0: WIDTH 80: COLOR 7, 0: CLS : END
  37.  
  38. 'For most of these, the higher the number, the slower. Except where noted.
  39.  
  40. 'Vertical Wipes
  41. DATA 13,"vwrl",1,10
  42. DATA 13,"vwlr",2,10
  43.  
  44. 'Horizontal Wipes
  45. DATA 13,"hwud",3,10
  46. DATA 13,"hwdu",4,10
  47.  
  48. 'Diagonal Wipes
  49. DATA 13,"dwlrud",5,3:        'or "dwudlr"
  50. DATA 13,"dwrlud",6,3:        'or "dwudrl"
  51. DATA 13,"dwlrdu",7,3:        'or "dwdulr"
  52. DATA 13,"dwrldu",8,3:        'or "dwdurl"
  53.  
  54. 'Square Pixellite
  55. DATA 13,"sp",9,2:           '10 x 10 squares (instead of "speed")
  56.  
  57. 'Circle Pixellite
  58. DATA 13,"cp",10,2:           'Radius of 10 circles (instead of "speed")
  59.  
  60. 'For Horizontal and Vertical blinds, the lower the speed, the faster the
  61. 'display
  62.  
  63. 'Vertical Blinds
  64. DATA 13,"vbrl",11,3
  65. DATA 13,"vblr",12,3
  66.  
  67. 'Horizontal Blinds
  68. DATA 13,"hbud",13,3
  69. DATA 13,"hbdu",14,3
  70.  
  71. 'Diagonal Blinds
  72. DATA 13,"dblrud",35,3:        'or "dbudlr"
  73. DATA 13,"dbrlud",45,3:        'or "dbudrl"
  74. DATA 13,"dblrdu",55,3:        'or "dbdulr"
  75. DATA 13,"dbrldu",65,3:        'or "dbdurl"
  76.  
  77. SUB wipe (mode%, switch$, Colr%, Speed%)
  78.  
  79. SELECT CASE mode%
  80.     CASE 13: mx = 320: my = 200
  81.     CASE 12: mx = 640: my = 480
  82.     CASE 9: mx = 640: my = 350
  83.     CASE ELSE: mx = 320: my = 200: SCREEN 13    'Default
  84. END SELECT
  85.  
  86. switch$ = LCASE$(switch$)
  87.  
  88. SELECT CASE switch$
  89.     CASE "vwlr": '*** Vertical Wipe - L/R (VWLR)
  90.         FOR x = 0 TO mx STEP Speed%: FOR y = 0 TO my STEP Speed%
  91.             LINE (xb, yb)-(x + Speed%, y + Speed%), Colr%, BF
  92.             xb = x: yb = y
  93.         NEXT y, x
  94.     CASE "vwrl": '*** Vertical Wipe - R/L (VWRL)
  95.         xb = mx: yb = my
  96.         FOR x = mx TO 0 STEP -Speed%: FOR y = my TO 0 STEP -Speed%
  97.             LINE (xb, yb)-(x - Speed%, y - Speed%), Colr%, BF
  98.             xb = x: yb = y
  99.         NEXT y, x
  100.     CASE "hwdu": '*** Horizontal Wipe - D/U (HWDU)
  101.         xb = mx: yb = my
  102.         FOR y = my TO 0 STEP -Speed%: FOR x = mx TO 0 STEP -Speed%
  103.             LINE (xb, yb)-(x - Speed%, y - Speed%), Colr%, BF
  104.             xb = x: yb = y
  105.         NEXT x, y
  106.     CASE "hwud": '*** Horizontal Wipe - U/D  (HWUD)
  107.         FOR y = 0 TO my STEP Speed%: FOR x = 0 TO mx STEP Speed%
  108.             LINE (xb, yb)-(x + Speed%, y + Speed%), Colr%, BF
  109.             xb = x: yb = y
  110.         NEXT x, y
  111.     CASE "dwlrud", "dwudlr": '*** Diagonal Wipe - L/R U/D  (DWLRUD)
  112.         FOR i = 0 TO mx * 2: LINE (i, 0)-(0, i), Colr%: NEXT
  113.     CASE "dwrldu", "dwdurl": '*** Diagonal Wipe - R/L D/U  (DWRLDU)
  114.         FOR i = mx * 2 TO 0 STEP -1: LINE (i, 0)-(0, i), Colr%: NEXT
  115.     CASE "dwlrdu", "dwdulr": '*** Diagonal Wipe - L/R D/U  (DWLRDU)
  116.         x = mx: y = 0
  117.         FOR i = mx * 2 TO 0 STEP -1: LINE (x, y + i)-(x - i, y), Colr%: NEXT
  118.     CASE "dwrlud", "dwudrl": '*** Diagonal Wipe - R/L U/D  (DWRLUD)
  119.         x = mx: y = 0
  120.         FOR i = 0 TO mx * 2: LINE (x, y + i)-(x - i, y), Colr%: NEXT
  121.     CASE "sp": '*** Square Pixellite     (SP)
  122.         Cover = 50000 / Speed%
  123.         FOR i = 1 TO Cover
  124.             x = RND * mx: y = RND * my
  125.             LINE (x, y)-(x + Speed%, y + Speed%), Colr%, BF
  126.         NEXT
  127.         LINE (0, 0)-(mx, my), Colr%, BF
  128.     CASE "cp": '*** Circle Pixellite  (CP)
  129.         Cover = 50000 / Speed%
  130.         FOR i = 1 TO Cover
  131.             x = RND * mx: y = RND * my
  132.             CIRCLE (x, y), Speed%, Colr%: PAINT (x, y), Colr%, Colr%
  133.         NEXT
  134.         LINE (0, 0)-(mx, my), Colr%, BF
  135.     CASE "vblr": '*** Vertical Blind - L/R  (VBLR)
  136.         FOR i = 1 TO Speed%
  137.         FOR x = 0 + (Speed% - i) TO mx STEP Speed%: FOR y = 0 TO my
  138.             LINE (x, y)-(x, y), Colr%
  139.         NEXT y, x, i
  140.     CASE "vbrl": '*** Vertical Blind - R/L  (VBRL)
  141.         FOR i = Speed% TO 1 STEP -1
  142.         FOR x = mx + (Speed% - i) TO 0 STEP -Speed%: FOR y = 0 TO my
  143.             LINE (x, y)-(x, y), Colr%
  144.         NEXT y, x, i
  145.     CASE "hbud": '*** Horizontal Blind - U/D   (HBUD)
  146.         FOR i = 1 TO Speed%
  147.         FOR y = 0 + (Speed% - i) TO my STEP Speed%: FOR x = 0 TO mx
  148.             LINE (x, y)-(x, y), Colr%
  149.         NEXT x, y, i
  150.     CASE "hbdu": '*** Horizontal Blind - D/U   (HBDU)
  151.         FOR i = Speed% TO 1 STEP -1
  152.         FOR y = my + (Speed% - i) TO 0 STEP -Speed%: FOR x = 0 TO mx
  153.             LINE (x, y)-(x, y), Colr%
  154.         NEXT x, y, i
  155.     CASE "dblrud", "dbudlr":  '*** Diagonal Blind - L/R U/D   (DBLRUD)
  156.         FOR j = 1 TO Speed%: FOR i = 0 TO mx * 2 STEP Speed%
  157.             LINE (i, j)-(j, i), Colr%
  158.         NEXT i, j
  159.         LINE (0, 0)-(mx, my), Colr%, BF  'get rid of rough edges
  160.     CASE "dbrldu", "dbdurl": '*** Diagonal Blind - R/L D/U  (DBRLDU)
  161.         FOR j = 1 TO Speed%: FOR i = mx * 2 TO 0 STEP -Speed%
  162.             LINE (i, j)-(j, i), Colr%
  163.         NEXT i, j
  164.         LINE (0, 0)-(mx, my), Colr%, BF  'get rid of rough edges
  165.     CASE "dblrdu", "dbdulr":  '*** Diagonal Blind - L/R D/U  (DBLRDU)
  166.         x = mx: y = 0
  167.         FOR j = 1 TO Speed%: FOR i = mx * 2 TO 0 STEP -Speed%
  168.             LINE (x + j, y + i)-(x - i, y - j), Colr%
  169.         NEXT i, j
  170.     CASE "dbrlud", "dbudrl": '*** Diagonal Blind - R/L U/D   (DBRLUD)
  171.         x = 0: y = my
  172.         FOR j = 1 TO Speed%: FOR i = mx * 2 TO 0 STEP -Speed%
  173.             LINE (x + i, y + j)-(x - j, y - i), Colr%
  174.         NEXT i, j
  175. END SELECT
  176.  
  177. END SUB
  178.  
  179.